package br.com.pfc.mobile.activity;

import java.util.Map;
import java.util.Set;

import android.app.ActivityGroup;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;
import android.widget.Toast;
import br.com.pfc.mobile.R;
import br.com.pfc.mobile.comunicao.ComunicacaoCliente;
import br.com.pfc.mobile.transferobject.CategoriaClienteTO;
import br.com.pfc.mobile.transferobject.ClienteTO;
import br.com.pfc.mobile.transferobject.EnderecoTO;
import br.com.pfc.mobile.transferobject.RegiaoTO;
import br.com.pfc.mobile.transferobject.UsuarioTO;
import br.com.pfc.mobile.util.MobileSession;

public class CadastroClienteActivity extends ActivityGroup {

	private String[] regioes;
	private String[] categorias;
	ArrayAdapter<String> adapterRegiao;
	ArrayAdapter<String> adapterCategoria;
	private Spinner regiaoSpinner;
	private Spinner categoriaSpinner;
	static TabHost tab;
	
	public void onCreate(Bundle icicle){
		super.onCreate(icicle);
		setContentView(R.layout.abas_cadastrar_cliente);
		tab = (TabHost)findViewById(R.id.tabhost);

		tab.setup(this.getLocalActivityManager());
		
		
		View viewDados = LayoutInflater.from(this).inflate(R.layout.cliente, tab.getTabContentView());
		final EditText documento = (EditText)  viewDados.findViewById(R.id.documento);
		final EditText nome = (EditText) viewDados.findViewById(R.id.nomeCliente);
		final EditText email = (EditText) viewDados.findViewById(R.id.email);
		
		View viewEnderecos = LayoutInflater.from(this).inflate(R.layout.endereco, tab.getTabContentView());
		final EditText logradouro = (EditText) viewEnderecos.findViewById(R.id.edLogradouro);
		final EditText bairro = (EditText) viewEnderecos.findViewById(R.id.edBairro);
		final EditText cep = (EditText) viewEnderecos.findViewById(R.id.edCep);
		final EditText cidade =  (EditText) viewEnderecos.findViewById(R.id.edCidade);
		final EditText uf = (EditText) viewEnderecos.findViewById(R.id.edUF);
		final EditText pais = (EditText) viewEnderecos.findViewById(R.id.edPais);
		
		MobileSession sessao = MobileSession.getInstance();
		Map mapa = sessao.getSessao();
		Map mapaRegiao = (Map) mapa.get("regioes");
		Set<String> keyRegiao = mapaRegiao.keySet();
		int indice = 0;
		regioes = new String[keyRegiao.size()];
		for (String k : keyRegiao) {
			RegiaoTO regiaoTO = (RegiaoTO) mapaRegiao.get(k);
			regioes[indice]  = regiaoTO.getNome();
			indice++;
		}
		adapterRegiao = new ArrayAdapter<String>(CadastroClienteActivity.this, android.R.layout.simple_spinner_item,regioes);

		regiaoSpinner = (Spinner)viewDados.findViewById(R.id.regiao);
		regiaoSpinner.setAdapter(adapterRegiao);

		Map mapaCategoria = (Map) mapa.get("categorias");
		
		Set<String> keyCategoria = mapaCategoria.keySet();
		indice = 0;
		categorias = new String[mapaCategoria.size()];
		for (String k : keyCategoria) {
			CategoriaClienteTO categoria = new CategoriaClienteTO();
			categoria = (CategoriaClienteTO) mapaCategoria.get(k);
			categorias[indice] = categoria.getDescricao();
			indice++;
		}
		adapterCategoria = new ArrayAdapter<String>(CadastroClienteActivity.this, android.R.layout.simple_spinner_item,categorias);
		
		categoriaSpinner = (Spinner)viewDados.findViewById(R.id.categoria);
		categoriaSpinner.setAdapter(adapterCategoria);
		
		
		TabSpec abaDadosPessoais = tab.newTabSpec("dadospessoais");
		abaDadosPessoais.setIndicator("Dados Pessoais");
		abaDadosPessoais.setContent(R.id.abaDadosPessoais);
		
		TabSpec abaEndereco = tab.newTabSpec("endereco");
		abaEndereco.setIndicator("Endereco");
		abaEndereco.setContent(R.id.abaEndereco);
		
		tab.addTab(abaDadosPessoais);
		tab.addTab(abaEndereco);
		
		
		ImageButton btSalvar = (ImageButton) findViewById(R.id.btSalvar);		
		
		btSalvar.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
				
				Map mapa = MobileSession.getSessao();
				
				Map mapaCategoria = (Map)mapa.get("categorias");
				CategoriaClienteTO categoria = (CategoriaClienteTO) mapaCategoria.get(categoriaSpinner.getSelectedItem().toString());
				
				Map mapaRegiao = (Map) mapa.get("regioes"); 
				RegiaoTO regiao = (RegiaoTO) mapaRegiao.get(regiaoSpinner.getSelectedItem().toString());
				
				UsuarioTO usuario = (UsuarioTO) mapa.get("usuarioLogado");
				
				ClienteTO cliente = new ClienteTO();
				cliente.setDocumento(documento.getText().toString());
				cliente.setNome(nome.getText().toString());
				cliente.setEmail(email.getText().toString());
				cliente.setRegiao(regiao);
				cliente.setUsuario(usuario);
				cliente.setCategoria(categoria);
				
				RadioGroup rg = (RadioGroup) findViewById(R.id.tipoPessoa);
				int tipo = rg.getCheckedRadioButtonId();
				
				if(tipo == R.id.pf){
					cliente.setTipo(ClienteTO.PESSOA_FISICA);
				}else{
					cliente.setTipo(ClienteTO.PESSOA_JURIDICA);
				}
				EnderecoTO endereco = new EnderecoTO();
				endereco.setLogradouro(logradouro.getText().toString());
				endereco.setBairro(bairro.getText().toString());
				endereco.setCep(cep.getText().toString());
				endereco.setCidade(cidade.getText().toString());
				endereco.setUf(uf.getText().toString());
				endereco.setPais(pais.getText().toString());
				
//				EnderecoTO enderecoEntrega  = new EnderecoTO();
//				enderecoEntrega.setLogradouro(logradouro.getText().toString());
//				enderecoEntrega.setBairro(bairro.getText().toString());
//				enderecoEntrega.setCep(cep.getText().toString());
//				enderecoEntrega.setCidade(cidade.getText().toString());
//				enderecoEntrega.setUf(uf.getText().toString());
//				enderecoEntrega.setPais(pais.getText().toString());
//				
//				enderecos.add(endereco);
//				enderecos.add(enderecoEntrega);
				cliente.setEndereco(endereco);
				
				ComunicacaoCliente comCliente = new ComunicacaoCliente();
				if(comCliente.cadastrarCliente(cliente)){
					Toast.makeText(CadastroClienteActivity.this, "Cadastro realizado com sucesso", Toast.LENGTH_LONG).show();
				}else{
					Toast.makeText(CadastroClienteActivity.this, "Ocorreu um problema, contate o administrador do sistema", Toast.LENGTH_LONG).show();
				}
				
				
			}
		});
		
		
		
	}
	
	
	 @Override
	 public boolean onCreateOptionsMenu(Menu menu){
		 super.onCreateOptionsMenu(menu);
		 menu.add(0, 0, 0, "Pesquisar").setIcon(R.drawable.pesquisar);		 
		 return true;
	 }
	 
	 @Override
	 public boolean onMenuItemSelected(int featureId,MenuItem item){
		 switch (item.getItemId()) {
	
		 case 0:
			 startActivity(new Intent(CadastroClienteActivity.this,BuscaClienteActivity.class));
			 break;

		 }
		 return false;
	 }
}
